home *** CD-ROM | disk | FTP | other *** search
/ TOS Silver 2000 / TOS Silver 2000.iso / Anwendun / 7UP_PD / WIND_.C < prev    next >
Encoding:
C/C++ Source or Header  |  1997-01-17  |  3.5 KB  |  170 lines

  1. /* Ersetzt/ergänzt fehlerhafte Bindings */
  2. /*****************************************************************************
  3. *
  4. *                                              7UP
  5. *                                      Modul: WINDBIND.C
  6. *                                     (c) by TheoSoft '93
  7. *
  8. *****************************************************************************/
  9. #include <portab.h>
  10. #include <aes.h>
  11. #include "windows.h"
  12.  
  13. #define EXOB_TYPE(x) (x>>8)
  14.  
  15. extern int dial_handle;
  16.  
  17. int _wind_calc(int wh, int type, int kind, 
  18.             int x, int y, int w, int h, int *xr, int *yr, int *wr, int *hr)
  19. {
  20.     WINDOW *wp;
  21.     
  22.     AESPB aespb=
  23.     {
  24.         _GemParBlk.contrl,
  25.         _GemParBlk.global,
  26.         _GemParBlk.intin,
  27.         _GemParBlk.intout,
  28.         _GemParBlk.addrin,
  29.         _GemParBlk.addrout
  30.     };
  31.     
  32.     wp=Wp(wh);
  33.     
  34.     if(type==WC_WORK)
  35.     {
  36.         _GemParBlk.intin [0] = type;
  37.         _GemParBlk.intin [1] = kind;
  38.         _GemParBlk.intin [2] = x;
  39.         _GemParBlk.intin [3] = y;
  40.         _GemParBlk.intin [4] = w;
  41.         _GemParBlk.intin [5] = h;
  42.  
  43.         _GemParBlk.contrl[0] = 108;    
  44.         _GemParBlk.contrl[1] =   6;    
  45.         _GemParBlk.contrl[2] =   5;    
  46.         _GemParBlk.contrl[3] =   0;    
  47.  
  48.         _crystal(&aespb);
  49.  
  50.         *xr=_GemParBlk.intout [1];
  51.         *yr=_GemParBlk.intout [2];
  52.         *wr=_GemParBlk.intout [3];
  53.         *hr=_GemParBlk.intout [4];
  54.  
  55.         if(wp && (dial_handle==-1))
  56.         {
  57.             (*xr)+=(wp->wscroll/2);
  58.             (*wr)-=(wp->wscroll/2);
  59.             if(wp->toolbar)
  60.             {
  61.                 if(EXOB_TYPE(wp->toolbar->ob_type) == 1) /* senkrecht */
  62.                 {
  63.                     (*xr)+=(wp->toolbar->ob_width);
  64.                     (*wr)-=(wp->toolbar->ob_width);
  65.                 }
  66.                 else
  67.                 {
  68.                     (*yr)+=wp->toolbar->ob_height;
  69.                     (*hr)-=wp->toolbar->ob_height;
  70.                 }
  71.             }
  72.         }
  73.  
  74.         return(_GemParBlk.intout [0]);
  75.     }
  76.     if(type==WC_BORDER)
  77.     {
  78.         if(wp && (dial_handle==-1))
  79.         {
  80.             x-=(wp->wscroll/2);
  81.             w+=(wp->wscroll/2);
  82.             if(wp->toolbar)
  83.             {
  84.                 if(EXOB_TYPE(wp->toolbar->ob_type) == 1) /* senkrecht */
  85.                 {
  86.                     x-=(wp->toolbar->ob_width);
  87.                     w+=(wp->toolbar->ob_width);
  88.                 }
  89.                 else
  90.                 {
  91.                     y-=wp->toolbar->ob_height;
  92.                     h+=wp->toolbar->ob_height;
  93.                 }
  94.             }
  95.         }
  96.         _GemParBlk.intin [0] = type;
  97.         _GemParBlk.intin [1] = kind;
  98.         _GemParBlk.intin [2] = x;
  99.         _GemParBlk.intin [3] = y;
  100.         _GemParBlk.intin [4] = w;
  101.         _GemParBlk.intin [5] = h;
  102.  
  103.         _GemParBlk.contrl[0] = 108;    
  104.         _GemParBlk.contrl[1] =   6;    
  105.         _GemParBlk.contrl[2] =   5;    
  106.         _GemParBlk.contrl[3] =   0;    
  107.  
  108.         _crystal(&aespb);
  109.  
  110.         (*xr)=_GemParBlk.intout [1];
  111.         (*yr)=_GemParBlk.intout [2];
  112.         (*wr)=_GemParBlk.intout [3];
  113.         (*hr)=_GemParBlk.intout [4];
  114.  
  115.         return(_GemParBlk.intout [0]);
  116.     }
  117. }
  118.  
  119. int _wind_get(int handle, int field, int *xr, int *yr, int *wr, int *hr)
  120. {
  121.    WINDOW *wp;
  122.    
  123.     AESPB aespb=
  124.     {
  125.         _GemParBlk.contrl,
  126.         _GemParBlk.global,
  127.         _GemParBlk.intin,
  128.         _GemParBlk.intout,
  129.         _GemParBlk.addrin,
  130.         _GemParBlk.addrout
  131.     };
  132.  
  133.     wp=Wp(handle);
  134.     
  135.     _GemParBlk.intin [0] = handle;
  136.     _GemParBlk.intin [1] = field;
  137.  
  138.     _GemParBlk.contrl[0] = 104;    
  139.     _GemParBlk.contrl[1] =   3;    /* war 2 */
  140.     _GemParBlk.contrl[2] =   5;    
  141.     _GemParBlk.contrl[3] =   0;    
  142.  
  143.     _crystal(&aespb);
  144.  
  145.     *xr=_GemParBlk.intout [1];
  146.     *yr=_GemParBlk.intout [2];
  147.     *wr=_GemParBlk.intout [3];
  148.     *hr=_GemParBlk.intout [4];
  149.     if(wp && (field==WF_WORKXYWH) && (handle!=dial_handle))
  150.     {
  151.         (*xr)+=(wp->wscroll/2);
  152.         (*wr)-=(wp->wscroll/2);
  153.         if(wp->toolbar)
  154.         {
  155.             if(EXOB_TYPE(wp->toolbar->ob_type) == 1) /* senkrecht */
  156.             {
  157.                 (*xr)+=(wp->toolbar->ob_width);
  158.                 (*wr)-=(wp->toolbar->ob_width);
  159.             }
  160.             else
  161.             {
  162.                 (*yr)+=wp->toolbar->ob_height;
  163.                 (*hr)-=wp->toolbar->ob_height;
  164.             }
  165.         }
  166.     }
  167.     return(_GemParBlk.intout [0]);
  168. }
  169.  
  170.